package io;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

/**
 * 对象流:java.io.ObjectInputStream和ObjectOutputStream
 * 对象流是一对高级流
 * 对象流用于进行对象的序列化与反序列化
 *
 * 对象序列化:将一个对象转换为一组可以用于保存或网络传输的字节的过程。
 * 相反的操作称为"对象反序列化"
 */
public class OOSDemo {
    public static void main(String[] args) throws IOException {
        //将一个Person对象序列化后写入文件person.obj中
        Person p = new Person("王克晶",18,'女',new String[]{"java基础老师","按时下课"});

        FileOutputStream fos = new FileOutputStream("person.obj");
        ObjectOutputStream oos = new ObjectOutputStream(fos);
         /*
            对象流提供的重要方法:
            void writeObject(Object obj)
            将给定的对象序列化为一组字节，再将其通过链接的流写出

            该方法要求序列化的对象所属的类必须实现可序列化接口，否则会抛出异常:
            java.io.NotSerializableException

            序列化接口:java.io.Serializable
         */
        oos.writeObject(p);
        System.out.println("写出完毕");
        oos.close();
    }
}
